// 提供类似 Pinia 风格的 store hooks
import store from "./idnex";

/**
 * 获取用户模块的 store
 * @returns {Object} 用户模块的状态和方法
 */
export function useUserStore() {
  return {
    // 状态
    get token() {
      return store.state.user.token;
    },
    get userInfo() {
      return store.state.user.userInfo;
    },
    get isLoggedIn() {
      return store.state.user.isLoggedIn;
    },

    // 方法
    login(payload) {
      return store.dispatch("user/login", payload);
    },
    logout() {
      return store.dispatch("user/logout");
    },
    updateUserInfo(userInfo) {
      return store.dispatch("user/updateUserInfo", userInfo);
    },
  };
}

/**
 * 获取应用配置模块的 store
 * @returns {Object} 应用配置模块的状态和方法
 */
export function useAppStore() {
  return {
    // 状态
    get appConfig() {
      return store.state.app.appConfig;
    },
    get loading() {
      return store.state.app.loading;
    },

    // 方法
    initAppConfig(config) {
      return store.dispatch("app/initAppConfig", config);
    },
    setBaseURL(url) {
      return store.dispatch("app/setBaseURL", url);
    },
    setLoading(status) {
      return store.dispatch("app/setLoading", status);
    },
  };
}

/**
 * 获取系统模块的 store
 * @returns {Object} 系统模块的状态和方法
 */
export function useSystemStore() {
  return {
    // 状态
    get systemInfo() {
      return store.state.system.systemInfo;
    },

    // 方法
    getSystemInfo() {
      return store.dispatch("system/getSystemInfo");
    },
  };
}

/**
 * 获取底部导航栏模块的 store
 * @returns {Object} 底部导航栏模块的状态和方法
 */
export function useTabbarStore() {
  return {
    // 状态
    get current() {
      return store.state.tabbar.current;
    },
    get list() {
      return store.state.tabbar.list;
    },

    // 方法
    setTabbarIndex(index) {
      return store.commit("tabbar/SET_TABBAR_INDEX", index);
    },
    addTabbarItem(item) {
      return store.commit("tabbar/ADD_TABBAR_ITEM", item);
    },
    updateTabbarItem(payload) {
      return store.commit("tabbar/UPDATE_TABBAR_ITEM", payload);
    },
    removeTabbarItem(index) {
      return store.commit("tabbar/REMOVE_TABBAR_ITEM", index);
    },
    setTabbarList(list) {
      return store.commit("tabbar/SET_TABBAR_LIST", list);
    },
  };
}
